{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## RNN (Recurrent Neural Networks) 是什麼?\n",
    "\n",
    "循環神經網絡（RNN）是非常流行的模型，在NLP的很多任務中已經展示出了很大的威力。\n",
    "\n",
    "RNN背後的思想是利用信息序列間彼此的相關性。在傳統的神經網絡中，我們假設所有的輸入（包括輸出）之間是相互獨立的。對於很多任務來說，這樣的假設並不適當。 \n",
    "\n",
    "如果我們想預測一個序列中的下一個詞，我們最好能知道哪些詞在它前面。RNN之所以是循環的，是因為它針對序列中的每一個元素都執行相同的操作，每一個操作都依賴於之前的計算結果(state)，換一種方式思考，可以認為RNN記憶了到當前為止已經計算過的信息。\n",
    "\n",
    "下面是RNN的一個典型結構圖：\n",
    "\n",
    "\n",
    "![](https://4.bp.blogspot.com/-U-b50pPNd_s/WQ8C-5g0siI/AAAAAAAAI8c/VCpWPA-z3Y8iTvLIhX6hlO83BqogFMu5ACLcB/s640/RNN2.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "為了使這些循環和狀態的概念更清楚，我們用Numpy來實現一個簡單的RNN。假設我們的RNN需要接受一個\"向量的序列(sequence of vectors)\"作為輸人(input), 這個\"向量的序列\"用一個2維的張量(timesteps, input_features)來表示。\n",
    "\n",
    "我們的RNN要迭代每一個\"時間步(timestep)\", 之後我們用\"t\"來表示\"時間步(timestep)\"。那某特定\"時間步(t)\"的輸入為\"X\"(input_feature"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 一個簡單RNN的pseudo-code:\n",
    "\n",
    "```\n",
    "state_t = 0 # 這是某一個\"時間步(timestep)\"的內部狀態(state)\n",
    "for input_t in input_sequence:\n",
    "    output_t = f(input_t, state_t)\n",
    "    state_t = output_t # 前一個處理過的輸出(output)變成新的狀態(state)\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我們可以進一步的細分其中的 \" f \" 這個函數的內容:\n",
    "> \" f \" 函數: 用來轉換輸入(input)與狀態(state)成為輸出(output),這個函數通過兩個矩陣W和U和一個偏向量(bias)進行參數化。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 一個簡單RNN更詳細的pseudo-code:\n",
    "\n",
    "```\n",
    "state_t = 0 # 這是某一個\"時間步(timestep)\"的內部狀態(state)\n",
    "for input_t in input_sequence:\n",
    "    output_t = activation(dot(W, input_t) + dot(U, state_t) + b)\n",
    "    state_t = output_t # 前一個處理過的輸出(output)變成新的狀態(state)\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 用Numpy實現的一個簡單RNN\n",
    "```\n",
    "timesteps = 100 # 輸入序列中的時間步數\n",
    "inputs_features = 32 # 輸入特徵空間的維度\n",
    "output_features = 64 # 輸出特徵空間的維度\n",
    "\n",
    "# 這是我們的輸入數據\n",
    "inputs = np.random.random((timesteps, features))\n",
    "\n",
    "# 這是我們的“初始狀態”：一個全零向量\n",
    "state_t = np.zeros((output_features,))\n",
    "\n",
    "# 創建隨機權重矩陣\n",
    "W = np.random.random((input_features, output_features)\n",
    "U = np.random.random((output_features, output_features)\n",
    "b = np.random.random((output_features,))\n",
    "\n",
    "successive_outputs = []\n",
    "for input_t in inputs: \n",
    "    # 我們將輸入與當前狀態（即前一個輸出）組合以獲得當前輸出。\n",
    "    output_t = np.tanh(np.dot(W, input_t) + np.dot(U, state_t) + b)\n",
    "    \n",
    "    # 我們將此輸出存儲在一個列表中。\n",
    "    successive_outputs.append(output_t)\n",
    "    \n",
    "    # 我們更新下一個時間步的網絡“狀態”\n",
    "    state_t = output_t\n",
    "    \n",
    "# 最終輸出是2D張量(timesteps, output_features)\n",
    "final_output_sequence = np.concatenate(successive_outputs, axis=0)\n",
    "```\n",
    "\n",
    "![](https://3.bp.blogspot.com/-9cz6YIf-3Wk/WQ8C-7QNnOI/AAAAAAAAI8g/iFhXR9t3ii0UE9ZRXs425wR_HYJk9i7WgCLcB/s640/RNN1.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Keras中的第一個循環神經層\n",
    "\n",
    "在Keras中的`SimpleRNN`神經層可視為上述Numpy簡單循環神經函式的實現。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'2.1.1'"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import keras\n",
    "keras.__version__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from keras.layers import SimpleRNN"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "跟上述Numpy的RNN函式有一些些的不同： `SimpleRNN`像所有其他Keras神經層一樣，它會批次地處理序列(batches of sequences)資料，而不是像我們的Numpy示例中的單個序列。 這意味著它需要的張量結構形狀`(batch_size，timesteps，input_features)`的輸入，而不是`(timesteps, input_features)`。\n",
    "\n",
    "像Keras中的所有其它的循環神經層(recurrent layers)一樣，`SimpleRNN`可以用兩種不同的模式來運行：\n",
    "1. 它可以返回每個時間步的連續輸出的全部序列（一個形狀為`(batch_size，timesteps，output_features)`的3D張量）\n",
    "2. 或者它 可以僅返回每個輸入序列的最後一個輸出（一個形狀為`(batch_size，output_features)`的2D張量）。 \n",
    "\n",
    "這兩種模式由`return_sequences`構造函數參數控制。 我們來看一個例子:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用SimpleRNN並返回最後一個狀態\n",
    "\n",
    "`return_sequences`預設為`False`\n",
    "\n",
    "![many-to-one](https://i.stack.imgur.com/QCnpU.jpg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "embedding_1 (Embedding)      (None, None, 32)          320000    \n",
      "_________________________________________________________________\n",
      "simple_rnn_1 (SimpleRNN)     (None, 32)                2080      \n",
      "=================================================================\n",
      "Total params: 322,080\n",
      "Trainable params: 322,080\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "from keras.models import Sequential\n",
    "from keras.layers import Embedding, SimpleRNN\n",
    "\n",
    "model = Sequential()\n",
    "model.add(Embedding(10000, 32))\n",
    "model.add(SimpleRNN(32)) # return_sequences預設為False\n",
    "model.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用SimpleRNN並返回完整的狀態序列\n",
    "\n",
    "把`return_sequences`設為`True`\n",
    "\n",
    "![many-to-many](https://i.stack.imgur.com/DiPyQ.jpg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "embedding_2 (Embedding)      (None, None, 32)          320000    \n",
      "_________________________________________________________________\n",
      "simple_rnn_2 (SimpleRNN)     (None, None, 32)          2080      \n",
      "=================================================================\n",
      "Total params: 322,080\n",
      "Trainable params: 322,080\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model = Sequential()\n",
    "model.add(Embedding(10000, 32))\n",
    "model.add(SimpleRNN(32, return_sequences=True)) # 把return_sequences設為True\n",
    "model.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 將多個RNN圖層堆疊在一起\n",
    "\n",
    "為了增加神經網絡的表示能力，有時把多個RNN一個接一個地堆疊起來很有用。在這樣的設置中，我們必須讓所有的RNN中間層返回完整的序列：\n",
    "\n",
    "![rnn-stacking](https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/content/image_folder_6/RNN_Stacking.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "embedding_3 (Embedding)      (None, None, 32)          320000    \n",
      "_________________________________________________________________\n",
      "simple_rnn_3 (SimpleRNN)     (None, None, 32)          2080      \n",
      "_________________________________________________________________\n",
      "simple_rnn_4 (SimpleRNN)     (None, None, 32)          2080      \n",
      "_________________________________________________________________\n",
      "simple_rnn_5 (SimpleRNN)     (None, None, 32)          2080      \n",
      "_________________________________________________________________\n",
      "simple_rnn_6 (SimpleRNN)     (None, 32)                2080      \n",
      "=================================================================\n",
      "Total params: 328,320\n",
      "Trainable params: 328,320\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model = Sequential()\n",
    "model.add(Embedding(10000, 32))\n",
    "model.add(SimpleRNN(32, return_sequences=True)) # 把return_sequences設為True\n",
    "model.add(SimpleRNN(32, return_sequences=True)) # 把return_sequences設為True\n",
    "model.add(SimpleRNN(32, return_sequences=True)) # 把return_sequences設為True\n",
    "model.add(SimpleRNN(32))  # 只有最後的RNN層只需要最後的output, 因此不必特別去設置\"return_sequences\"\n",
    "model.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "現在讓我們嘗試在IMDB電影評論分類問題上使用這種模型。 首先，我們預處理數據："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loading data...\n",
      "25000 train sequences\n",
      "25000 test sequences\n",
      "Pad sequences (samples x time)\n",
      "input_train shape: (25000, 500)\n",
      "input_test shape: (25000, 500)\n"
     ]
    }
   ],
   "source": [
    "from keras.datasets import imdb\n",
    "from keras.preprocessing import sequence\n",
    "\n",
    "max_features = 10000  # 要考慮作為特徵的語詞數量\n",
    "maxlen = 500  # 當句子的長度超過500個語詞的部份,就把它刪除掉\n",
    "batch_size = 32\n",
    "\n",
    "# 載入IMDB的資料\n",
    "print('Loading data...')\n",
    "(input_train, y_train), (input_test, y_test) = imdb.load_data(num_words=max_features)\n",
    "print(len(input_train), 'train sequences')\n",
    "print(len(input_test), 'test sequences')\n",
    "\n",
    "# 如果長度不夠的話就補空的\n",
    "print('Pad sequences (samples x time)')\n",
    "input_train = sequence.pad_sequences(input_train, maxlen=maxlen)\n",
    "input_test = sequence.pad_sequences(input_test, maxlen=maxlen)\n",
    "print('input_train shape:', input_train.shape)\n",
    "print('input_test shape:', input_test.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我們使用一個`Embedding`層和一個`SimpleRNN`層來訓練一個簡單的循環網絡(`RNN`)："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "embedding_4 (Embedding)      (None, None, 32)          320000    \n",
      "_________________________________________________________________\n",
      "simple_rnn_7 (SimpleRNN)     (None, 32)                2080      \n",
      "_________________________________________________________________\n",
      "dense_1 (Dense)              (None, 1)                 33        \n",
      "=================================================================\n",
      "Total params: 322,113\n",
      "Trainable params: 322,113\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n",
      "Train on 20000 samples, validate on 5000 samples\n",
      "Epoch 1/10\n",
      "20000/20000 [==============================] - 37s 2ms/step - loss: 0.6397 - acc: 0.6175 - val_loss: 0.4824 - val_acc: 0.7774\n",
      "Epoch 2/10\n",
      "20000/20000 [==============================] - 36s 2ms/step - loss: 0.4124 - acc: 0.8239 - val_loss: 0.4232 - val_acc: 0.8078\n",
      "Epoch 3/10\n",
      "20000/20000 [==============================] - 35s 2ms/step - loss: 0.3003 - acc: 0.8791 - val_loss: 0.3664 - val_acc: 0.8384\n",
      "Epoch 4/10\n",
      "20000/20000 [==============================] - 36s 2ms/step - loss: 0.2471 - acc: 0.9030 - val_loss: 0.4129 - val_acc: 0.8166\n",
      "Epoch 5/10\n",
      "20000/20000 [==============================] - 35s 2ms/step - loss: 0.1776 - acc: 0.9362 - val_loss: 0.3848 - val_acc: 0.8702\n",
      "Epoch 6/10\n",
      "20000/20000 [==============================] - 35s 2ms/step - loss: 0.1285 - acc: 0.9546 - val_loss: 0.3807 - val_acc: 0.8682\n",
      "Epoch 7/10\n",
      "20000/20000 [==============================] - 38s 2ms/step - loss: 0.0847 - acc: 0.9715 - val_loss: 0.4244 - val_acc: 0.8522\n",
      "Epoch 8/10\n",
      "20000/20000 [==============================] - 35s 2ms/step - loss: 0.0498 - acc: 0.9843 - val_loss: 0.6897 - val_acc: 0.7588\n",
      "Epoch 9/10\n",
      "20000/20000 [==============================] - 35s 2ms/step - loss: 0.0357 - acc: 0.9881 - val_loss: 0.6835 - val_acc: 0.7824\n",
      "Epoch 10/10\n",
      "20000/20000 [==============================] - 35s 2ms/step - loss: 0.0275 - acc: 0.9915 - val_loss: 0.8700 - val_acc: 0.8058\n"
     ]
    }
   ],
   "source": [
    "from keras.layers import Dense\n",
    "\n",
    "model = Sequential()\n",
    "model.add(Embedding(max_features, 32))\n",
    "model.add(SimpleRNN(32))\n",
    "model.add(Dense(1, activation='sigmoid'))\n",
    "\n",
    "model.summary()\n",
    "\n",
    "model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc'])\n",
    "history = model.fit(input_train, y_train,\n",
    "                    epochs=10,\n",
    "                    batch_size=128,\n",
    "                    validation_split=0.2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我們用圖表來看一下模型在訓練(training)和驗證(validation)的損失(loss)和準確性(accuracy)："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1dc8fd30>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x23533908>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "acc = history.history['acc']\n",
    "val_acc = history.history['val_acc']\n",
    "loss = history.history['loss']\n",
    "val_loss = history.history['val_loss']\n",
    "\n",
    "epochs = range(len(acc))\n",
    "\n",
    "plt.plot(epochs, acc, label='Training acc')\n",
    "plt.plot(epochs, val_acc, label='Validation acc')\n",
    "plt.title('Training and validation accuracy')\n",
    "plt.legend()\n",
    "\n",
    "plt.figure()\n",
    "\n",
    "plt.plot(epochs, loss, label='Training loss')\n",
    "plt.plot(epochs, val_loss, label='Validation loss')\n",
    "plt.title('Training and validation loss')\n",
    "plt.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用`SimpleRNN`我們對這個數據集獲得了81％的測試精度。 這個網絡模型表現不算太好,部分問題是我們的輸入只考慮了前500個語詞而不是考慮所有序列語詞。 別外的一個問題是`SimpleRNN`在處理長序列（如文本）方面表現不太好(有梯度消失或梯度爆炸的現象)。我們來看看其它更高級的神經圖層。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 了解長短期記憶模型（long short-term memory，LSTM）與 GRU\n",
    "\n",
    "`SimpleRNN`不是Keras唯一可用的RNN層：在Keras中還有`LSTM`和`GRU`。 在實務中，你將永遠使用其中的一個，`SimpleRNN`一般來說太簡單了，以至於沒有任何實際用途。\n",
    "\n",
    "LSTM（long short-term memory單元(cell)使用了輸入閘(input gate)，忘記閘(forget get)和輸出閘(output gate)來解決原本的RNN單元(cell)會面臨的梯度消失或梯度爆炸的現象。\n",
    "\n",
    "![lstm_vs_rnn](https://cdn-images-1.medium.com/max/1600/0*kl2Cd89GGQClOS48.)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "這些閘每個都有自己的一組權重值。 整個LSTM單元(cell)是可微分的（意思是我們計算梯度並使用它們來更新權重），所以我們可以使用反向(back-propagation)來迭代訓練它。基本上，LSTM單元為我們提供遺忘(forget)，記憶(memory)和關注(attention)的機制。 \n",
    "\n",
    "![lstm_cell](https://cdn-images-1.medium.com/max/1600/0*LyfY3Mow9eCYlj7o.)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 一個具體的LSTM範例\n",
    "\n",
    "現在讓我們看看LSTM如何解決實際的問題：我們將使用LSTM層建立一個模型，並在IMDB數據上進行訓練。 這個網絡設計類似於我們剛剛介紹的那個`SimpleRNN`。 我們只指定LSTM圖層的輸出維度，並將其他所有參數（有很多）留給Keras默認值。 Keras具有良好的默認設置，並且事情幾乎總是“正常工作”，而無需我們花太多時間手動調整參數。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "embedding_5 (Embedding)      (None, None, 32)          320000    \n",
      "_________________________________________________________________\n",
      "lstm_1 (LSTM)                (None, 32)                8320      \n",
      "_________________________________________________________________\n",
      "dense_2 (Dense)              (None, 1)                 33        \n",
      "=================================================================\n",
      "Total params: 328,353\n",
      "Trainable params: 328,353\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n",
      "Train on 20000 samples, validate on 5000 samples\n",
      "Epoch 1/10\n",
      "20000/20000 [==============================] - 117s 6ms/step - loss: 0.5242 - acc: 0.7536 - val_loss: 0.3850 - val_acc: 0.8578\n",
      "Epoch 2/10\n",
      "20000/20000 [==============================] - 115s 6ms/step - loss: 0.3017 - acc: 0.8801 - val_loss: 0.3114 - val_acc: 0.8830\n",
      "Epoch 3/10\n",
      "20000/20000 [==============================] - 108s 5ms/step - loss: 0.2374 - acc: 0.9090 - val_loss: 0.2728 - val_acc: 0.8932\n",
      "Epoch 4/10\n",
      "20000/20000 [==============================] - 109s 5ms/step - loss: 0.2010 - acc: 0.9248 - val_loss: 0.4256 - val_acc: 0.8672\n",
      "Epoch 5/10\n",
      "20000/20000 [==============================] - 113s 6ms/step - loss: 0.1754 - acc: 0.9370 - val_loss: 0.3142 - val_acc: 0.8886\n",
      "Epoch 6/10\n",
      "20000/20000 [==============================] - 110s 6ms/step - loss: 0.1535 - acc: 0.9447 - val_loss: 0.4495 - val_acc: 0.8726\n",
      "Epoch 7/10\n",
      "20000/20000 [==============================] - 112s 6ms/step - loss: 0.1387 - acc: 0.9506 - val_loss: 0.4064 - val_acc: 0.8382\n",
      "Epoch 8/10\n",
      "20000/20000 [==============================] - 113s 6ms/step - loss: 0.1286 - acc: 0.9551 - val_loss: 0.3430 - val_acc: 0.8828\n",
      "Epoch 9/10\n",
      "20000/20000 [==============================] - 109s 5ms/step - loss: 0.1157 - acc: 0.9598 - val_loss: 0.4107 - val_acc: 0.8504\n",
      "Epoch 10/10\n",
      "20000/20000 [==============================] - 108s 5ms/step - loss: 0.1057 - acc: 0.9641 - val_loss: 0.3868 - val_acc: 0.8808\n"
     ]
    }
   ],
   "source": [
    "from keras.layers import LSTM\n",
    "\n",
    "model = Sequential()\n",
    "model.add(Embedding(max_features, 32))\n",
    "model.add(LSTM(32))\n",
    "model.add(Dense(1, activation='sigmoid'))\n",
    "\n",
    "model.summary()\n",
    "\n",
    "model.compile(optimizer='rmsprop',\n",
    "              loss='binary_crossentropy',\n",
    "              metrics=['acc'])\n",
    "history = model.fit(input_train, y_train,\n",
    "                    epochs=10,\n",
    "                    batch_size=128,\n",
    "                    validation_split=0.2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n4ldKKR/z/wEPiKjHo0/hfQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x257d9c18>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\ns89+tf/GjRvJysoC4MiRIwwbNox27dpx2WWXceTIL9/a77rrropywY8++igAI0eOZNu2bfTt25e+\nffsCkJ6ezu7duwF4/vnnycrKIisrq6Jc8MaNG2nXrh233XYbmZmZnH/++VXOczyLFi2ie/fudOjQ\ngcsuu4y9e/dWnL+8BHB5wbLp06dXLFbSuXNnDh5073wdvxm1PzAzlZHfrSHvYBHJseFOh6OUd5v8\nMOxY6t5jpraHwU+d8OnExES6du3K5MmTueSSSxg3bhxXXXUVIkJERASffvopcXFx7N69m+7du3Px\nxRefcOb5yy+/TFRUFDk5OSxZsqRKyd4nn3ySxMRESktLOe+881iyZAn33Xcfzz//PNOmTaN+/aqX\nA+fPn89bb73Fzz//jDGGbt260bt3b+rVq8eaNWsYO3Ysr7/+OldddRUff/zxSeuzX3/99bz00kv0\n7t2bv//97/zjH/9gxIgRPPXUU2zYsIHw8PCKrqDnnnuOUaNG0bNnTwoKCoiIiDiVd7taPls47FiD\n26diDHy1QlvvSnmryl0zlbtkjDE88sgjdOjQgf79+7N161Z27tx5wuPMmDGjIsl26NCBDh06VDw3\nfvx4unTpQufOnVm+fHm1RcFmzZrFZZddRnR0NDExMVx++eXMnDkTgObNm9OpUyfg5GWFwdaX37dv\nH7179wbghhtuYMaMGRUxXnvttYwePbpiJmzPnj158MEHGTlyJPv27XP7DFm/abm3SYklPSmKKct2\ncG23Zk6Ho5R3O0kL25MuueQSHnjgARYsWMDhw4c588wzARgzZgx5eXnMnz+f0NBQ0tPTj1vmtzob\nNmzgueeeY+7cudSrV48bb7yxVscpV14uGGzJ4Oq6ZU7kyy+/ZMaMGXz++ec8+eSTLF26lIcffpgL\nL7yQSZMm0bNnT6ZOnUrbtm1rHeux/KblLiIMymrIj+vy2X+42OlwlFLHERMTQ9++fbn55purXEjd\nv38/DRo0IDQ0lGnTprFp06aTHufcc8/l/fffB2DZsmUsWbIEsOWCo6OjiY+PZ+fOnUyePLlin9jY\n2OP2a/fq1YsJEyZw+PBhDh06xKeffkqvXr1O+bXFx8dTr169ilb/e++9R+/evSkrK2PLli307duX\np59+mv3791NQUMC6deto3749f/rTnzjrrLNYuXLlKZ/zZPym5Q521Mwr09fxTc5OrjizsdPhKKWO\n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\nYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x25b76278>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "acc = history.history['acc']\n",
    "val_acc = history.history['val_acc']\n",
    "loss = history.history['loss']\n",
    "val_loss = history.history['val_loss']\n",
    "\n",
    "epochs = range(len(acc))\n",
    "\n",
    "plt.plot(epochs, acc, label='Training acc')\n",
    "plt.plot(epochs, val_acc, label='Validation acc')\n",
    "plt.title('Training and validation accuracy')\n",
    "plt.legend()\n",
    "\n",
    "plt.figure()\n",
    "\n",
    "plt.plot(epochs, loss, label='Training loss')\n",
    "plt.plot(epochs, val_loss, label='Validation loss')\n",
    "plt.title('Training and validation loss')\n",
    "plt.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用`LSTM`對這個數據集獲得了88％的測試精度, 相比`SimpleRNN`來說效果的確好多了。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 參考: \n",
    "* [fchollet: deep-learning-with-python-notebooks (原文)](https://github.com/fchollet/deep-learning-with-python-notebooks/blob/master/6.2-understanding-recurrent-neural-networks.ipynb)\n",
    "* [Keras官網](http://keras.io/)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "MIT License\n",
    "\n",
    "Copyright (c) 2017 François Chollet\n",
    "\n",
    "Permission is hereby granted, free of charge, to any person obtaining a copy\n",
    "of this software and associated documentation files (the \"Software\"), to deal\n",
    "in the Software without restriction, including without limitation the rights\n",
    "to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n",
    "copies of the Software, and to permit persons to whom the Software is\n",
    "furnished to do so, subject to the following conditions:\n",
    "\n",
    "The above copyright notice and this permission notice shall be included in all\n",
    "copies or substantial portions of the Software.\n",
    "\n",
    "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n",
    "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n",
    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n",
    "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n",
    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n",
    "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n",
    "SOFTWARE."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
